- web6047 - (2021/09/10(金) 現在、システム調整中のため、一部の表示がおかしいかもしれません)

 




homepage6047 Top Page 2018年 9月

プログラミングやRPG(作るほう)が好きな人の日記

2018/9 /24(月)

20180203-3DCG/20180203-基本プログラム の不備を修正

ちょっと最初に関係のない話を持ってきます。

以前、正社員としてプログラマーになったとき(10年以上前)、同僚の方が「プログラミングってキリが悪かったりすると夜更かししてしまう」と言ってい ました。

私だけではなく他の方も同じみたいです。

でもあんまり夜更かししていると身体に悪いので、皆さんも気を付けてください。

今回は上のメニューに登録してある「3DCG/基本プログラム」の修正の話です。

camDomeKaiten() の修正

fig.
▲3DCGの camDomeKaiten()

左の図のようにドーム状に動くことができるプログラム(関数)の不備を直しました。

結構魅力的な動きですよね。

左の画像リンクをクリックすると プログラムリストを表示  します。

リンク先に水色の 「実行」 ボタンがあるので押せば実行されます。

以降は、どういうしくみでドーム状の回転を実現するのか説明します。


fig.
▲水平回転は何の問題もない

水平方向の回転は普通の回転で問題ありません。

水平方向は、いつでもx-z座標系での回転ができるからです。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲垂直に回転するとき
どの座標系にも属さないときがある

しかし、垂直方向の回転は、場合によってはどの座標系にも属さないので普通には回転できません。

水平方向はいいですが、垂直方向も単純に回転してしまうと、ドーム状の回転は実現できません。

左の画像リンクをクリックすると 画像を拡大 します。

※この「どの座標系にも属さないで回転」というのは「クオータニオン」みたいです(単語を検索)。仮に私のこの計算がクオータニオンと同じ結果を得ているとして、この計算とクオータニオンとの違いは、クオータニオンは任意軸・任意角での回転を1つの計算でエレガントに行っているのに対し、この私の計算は同様に任意軸・任意角で回転しているけど、複数の計算を組み合わせていてどこか庶民的に行っています。クオータニオンについて難しそうだと思って敬遠している方は以下に示す方法を検討してみてください。またはこのサイト(→)ではクオータニオンの計算を "焦らず落ち着いて考えれば、意外と単純な計算だけでクォータニオンを扱える" と言っていて、私もサイトを読んでいてそんな気になりました。ところで、サイト(ホームページ)ってその人の性格が現れるなぁと思います。私のこのサイト、いろいろやってるけど「未完成」な感じがするでしょ。本人もどこか「未完成」、「これからやるんだ」みたいな人間ですから。



fig.
▲手順1 水平回転を0にする

垂直方向の回転 手順 1

水平回転分を「回転なし」の状態にします。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲手順2 z-y座標系で垂直回転する

垂直方向の回転 手順 2

すると、z-y座標系で垂直回転が行える状態になります。

垂直回転を行います。

左図は横から見た図です。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲手順3 水平回転をもとに戻す

垂直方向の回転 手順 3

水平回転はいつでもできるので、水平回転を復元します。

以上で垂直回転が実現されます。

左の画像リンクをクリックすると 画像を拡大 します。


もっと適切な計算がほかにあるのかもしれませんが、私が考えたところではこうなりました。

考えた、と簡単に言っていますが、結構悩みました。実現できてほっとしています。実現できないままだと何か引っかかった感じになって先に進めないので…。

しかし、この camDomeKaiten()  はちょっと複雑な内容で3DCGの入門としては不適切かもしれません。



光の計算の不備の修正

fig.
▲正しい光計算

光の計算の不備を直しました。

陰影が付くと画面のクオリティが増しますね。

面の色の明るさの計算の時に、光源の位置を「視点から見た光源の位置」で計算していたので、視点が動くと面の明るさも変わってしまう状態でし た。

これを「面から見た光源の位置」に直して、視点は無関係にしたので、視点が動いても明るさは変わらないようになっています。

なお、左の図は camDomeKaiten() により、青い小さな正六面体を中心にドーム状にカメラを回転させたところでもあります。

左の画像リンクをクリックすると プログラムリストを表示 します。

リンク先に水色の 「実行」 ボタンがあるので押せば実行されます。



今回の修正で「3DCG/基本プログラム」の8つほどのプログラムはすべて問題のない状態、になったかなと思います。

「3DCG計算のプログラムに挑戦したけど、計算が難しすぎて挫折した」という方はいないでしょうか?

ここで紹介している3DCGのプログラムは、小学校5年生程度(割合の単元)で理解できる計算で成り立っています。

h = x * ( s / z )、v = y * ( s / z )

式中の s は基本的には固定値 50 が入ります。

これで3次元の座標 x,y,z を2次元の座標 h,v に変換できます。

この式の中に「割合」以外に難しい計算はあるでしょうか?3次元の計算ってこんなに単純なんですよね。

一部、sin, cos を使ったり、内積、外積の公式を使ったりしていますが、基本は上記の式です。

OpenGLやDirectXなどの難しい環境の中で3DCGのりくつを考えるよりは、上記の式だけの軽い環境で3DCGのりくつを考えるほうがラクで すよ。

私も上記の式がなければ、このホームページで公開しているいろいろな3DCG計算のダイナミックなアニメーションは作れなかったと思います。

式の出所はここです。Wikipedia/3DCG-原理

(なお、3次元の計算は上記のようにラクでも、「3次元のりくつ」はまた難しいので注意してください。たとえば物体が視点のうしろに回ると描画が崩れる から排除しなきゃいけないとか)


あれ…、上の camDomeKaiten() の修正の話…、結果としては問題なく動くようにはなっているけど、話の内容は間違ってんぞ…。orz ガックシ。

cam.kaitenHやcam.kaitenVは、上の説明では、あたかも 中心の物体に対する公転の回転の値であるかのように使っているけど、本当はカメラ(cam)の自転の変数なんだよな…。カメラがドーム状に回転する量と、カメラが中心の物 体を注視するときの回転の量が一致している(カメラが時計回りに公転するとき、注視するために時計回りに自転する)から何も問題なく動いている…。でもそ のことに気づいていれば、余計な変数を新たに作らないで済むから、結局は今回のプログラムになるのかな。今回はその辺知らないで作っていました。



2018/9 /18(火)

fig.
▲スムーズに動く

JavaScript「スムーズに動く3D迷路プログラム」

セガの昔の RPG の「ファンタシースター1」のダンジョンみたいにスムーズに回転する迷路プログラムです。

プログラムリスト

左の画像リンクをクリックすると JavaScript を実行します。





2018/9 /15(土)

今月のトップページの JavaScript は「多重スクロール」

毎月このホームページのトップページの冒頭に JavaScript によるプログラムを動かすようにしています。

今回は4回目(4か月目)です。

今月は、日本ファルコムのPC-88/9801用アクションRPG「ワンダラーズ・フロム・イース」(1989年発売)で話題になった「多重スクロー ル」というプログラムをまねしました。

今でこそ、JavaScriptで比較的楽に作れちゃう多重スクロールですが、当時は十数MHzのCPU上でアセンブラ(人間がハードウェアに直接命令 を出すことを基本とするプログラミング言語)を使用してグラフィックメモリに直接描く等していたんだと思います。


← 雲

雲の形なんですが、これは自分で撮影した写真に写っていた雲を見ながら描きました。

雲の写真は、ネットで「雲 写真」と検索すれば簡単に取り出すことができ、私も最初はそれで雲の写真を探していたんですが、それだと、なんの苦労もしな いで創作ができてしまい、たぶんそのできばえはイマイチになると思うんです。

しかし、ネットの写真で作ったものと、自分の写真で作ったものを もし比べたら、たぶん見分けはつかないと思います。

ではその2つの何が違うのか…。ネットから持ってきたか、自分で用意したものか、という属性が異なっています。異なっているのはそこだけです。どうして その違いにこだわるのか…(今考えてます)

わからない…。


← タイトル

あとタイトルですが、fromの位置がなんか変だなと思うところとか元のゲームの画面を再現しました。


一介のアマチュアプログラマーが、当時は難しかったプログラムを一晩で実現できてしまうなんて、最近のコンピューター環境はどうなってんだ、と思ってし まいます。

画像を左から右へ少しずつ動かす、というのはちょっとプログラムができる人なら、だれでもできますよね?その動かす量を 多め、中くらい、少なめ の3種類で3つの画像を動かせば多重スクロールとなります。しくみはこれだけなので、後はCPUの処理速度さえあれば一晩でできてしまうということです。(私はいつもです けど、難しいことは言っていない、難しいことはやっていない、と思うんで、分かってほしいと思います。でもぶっちゃけ、私のやってることは難しいと思いま すかね?)

あと、こんなダイナミックな画面でアクションRPGを遊ばせてくれたなんて当時の日本ファルコムはだいぶイケてる会社だったんだなと思います。


プログラムリスト

※プログラムリストは分かりやすく書いていません


2018/9 /9(日)

このところ、右腕を故障(椎間板ヘルニアの影響)しているのでプログラミング等は控えています。

ガンプラ

ガンプラ 1/144 RX-77-2「ガンキャノン」HG (¥800)

素組み

スマートホン KYOCERA URBANO L03 HDRモード で撮影

パッケージ 説 明書ポーズ再現
「説明書表紙」
説 明書ポーズ再現
「240mmキャノン砲発射体勢〈メモリアルアクション〉」
説 明書ポーズ再現
「ビームライフル発射状態」
説 明書ポーズ再現
「戦闘状態〈アクションポーズ〉」
説 明書ポーズ再現
「SPEC(各部位説明)」
自 由ポーズ
アップ
自 由ポーズ
片ひざつき
自 由ポーズ
直立

4年くらい前、川崎にいたころに、ヨドバシカメラで購入したガンキャノン。

(わざわざヨドバシまで出かけて購入したのがガンキャノン)

最後に頭を作れば完成、の状態で3年くらい放置していたが、今日残りの頭を作って完成したので撮影しました。

ガンプラHG(ハイグレード)シリーズの001番目です。

たしかHGガンキャノンのVer2.0みたいなのが出ていたはずだけど…これはこれでカッコイイですね。

1/144 HGの第1作目でありながら「片ひざつき」ポーズが取れるのはさすがバンダイですね。

作っていないOR作り途中のガンプラは他に、「MGストライクルージュ」、「HGグフ」、「HG UCガンダム デストロイモード」、「MGギラドーガ」があり、作り済みは「HGドム」、「HGクシャトリヤ」を持っています。それだけです。

ガンプラって「買うだけ」で作らないでも、消費(楽しみ)として成り立つんですよねぇ…。まだ手を付けていないのに次のを買ってしまう。


ところでガンプラの完成品をこのように掲載することについて、著作権ってどうなってるのかなと思って「ガンプラ 写真 著作権」をキーワードにして検索 (Bing)しました。

すると、、

ガンプラというのは、著作権は「機動戦士ガンダム」というアニメを制作した会社(サンライズや創通エージェンシー)にあるそうです。そしてバンダイはそ の会社から許諾を得てガンプラを製造しているそうです。

そのバンダイとしてはガンプラの完成の写真をネットに掲載することは「原則としてお断り」しているんだそうです。

(ここまで書いた時点で上に掲載の写真には黒塗りはしていなかったんですが、思い立って黒塗りを行いました。黒塗りすればOKというわけではないです が…)(2020/2/6 考え直して黒塗りははずしました)

いろいろ難しいんですが、私の言葉は間違っているかもしれませんが、会社としては建前としてはそう言わざるを得ない、っていうのかなぁ…、そうとも限ら ず、実際許可するといろいろな問題の可能性がある…かもしれないし…。

著作権の問題って、コピーしたものがどれだけ鮮明かというのもポイントになるみたいで、昔のように音楽のレコードからカセットテープへのダビングは音質 はだいぶ劣化していて、製品とはかけ離れたものであり、大きな問題にはならなかった。しかし、最近はデジタルで製品同等のコピーが可能になっているので、 製品の販売がさまたげられ、問題になっている。そういう観点で私のように写真に黒塗りを行って、劣化させて掲載することは著作権の問題がやわらぐんじゃな いかなと。

それでガンプラの著作権の問題を知りつつ、おそるおそる黒塗りで「いいかな?」と思って掲載しているわけです。でもこんな黒塗りじゃぁ痛々しいな。(2020/2/6 考え直して黒塗りははずしました)

あと、このホームページが全然人気がないので、まぁ問題として取り上げられることもないでしょ、、というのもあります。まさか田舎の田んぼ道に信号機設 置して赤なのに進行したからって検挙されたりしないでしょう。都会なら別ですが。でも最近はちょっとせこいだけで知事も辞職に追いやられる世の中だからわ からないけど。

私のこの文章を読んでいる方で同じような写真を掲載している方がいたとしても私は何も悪く言いません。とにかく、どこからどこまで可でどこまでが不可な のか、この精神的に不健康な状態が改善されると良いですね。


カラオケ

久しぶりにカラオケへ行ってきました。1名、1時間、DAMで、ドリンクバー制で700円くらいでした。

本当はマイナー曲の多いJOYSOUNDが良かったんですが、日曜だったので混んでいて、私が行ったときはDAMの2部屋しか空いておらず、DAMとな りました。しかもそこはパーティルームでした。

恥ずかしながら歌った曲は…

パーティールームで裸足になってソファの上に立ち、こんな曲を1時間、おどりつつ歌っていました。

どの曲も女性ボーカルなんですが、私は男ですよ?

ミスチルなど男性曲をほんとうは歌いたいんですが、発声が難しくて歌えないんですよ。

DAMは昔よりも進化していて、リモコンが要塞みたいにでっかくなっていました。

「カラオケ業界の巨人」と言われたシダックスが撤退して、カラオケ業界が衰退しているっていうのは、ほんとかなと思いました。歌っててこんなに楽しいの に。

カラオケは健康に良いんですよ。


2018/9 /1(土)

9月に入って、夏も終わり、ホッとしています。

最近のできごとを5件書きます。

1/5件目 D&Dを購入

fig.
▲届いたD&D

コンピューターRPG、テーブルトークRPGなど、すべてのRPGの元祖である「ダンジョンズ&ドラゴンズ」(テーブルトークRPG) を購入しました。

RPGが世に現れたとき(1974年)、人々はRPGの何を面白いと思ったのか。

なんらかのエッセンスを得られればと思います。

テーブルトークRPGは何人か集まって話し合いをしながら進めるRPGなので、一人では遊べません。

でもちょっと、同梱のルールの本を読んでみたところ、確かに面白そうだと思いました。その面白そうだというのは、、

自分のキャラクターを作って、司会者(ダンジョンマスター)が語る冒険の場面において、自分のキャラの多様なスキルを駆使して場面を切り抜けて いく…。サイコロを振ったりして自分の運も関わっているので、ゲーム性がある、、

そういう発見を自分のコンピューターRPGづくりに活かせたらと思います。

私は今までテーブルトークRPGというものはやったことがなかったし、これからもやる予定はないと思います。このゲームは人と面と向かって、自 分の考えをアドリブで(リアルタイムで考えて)表現して遊ぶゲームなので、人間関係に四苦八苦している私には難しいんです。あくまでも資料として 購入しました。

ちなみに、歴史上で「D&D」の前に何があったかと言うと、「チェインメイル」という中世ヨーロッパの戦争のボードゲームと、トールキ ンの指輪物語などの剣と魔法のファンタジーがありました。その2つの融合がテーブルトークRPG「D&D」であり、当時のゲームファン、 ファンタジーファンの人々に瞬く間に大ヒットしたそうです(Wikipedia「D&D」より)。それ以前にRPGの歴史上の記録はありません。 「D&D」はすべてのRPGの元祖で、今回購入したのはその第5版(バージョンアップの5回目)です。スターターなので入門版です。



2/5件目 牛久大仏

fig.
▲牛久大仏(左下の帽子は私)

お盆休みに家族で茨城県の牛久大仏を見てきました。

左の写真がそれです。

写真の左下の帽子をかぶっているのが私です。

この大仏、中はミュージアムのようになっていて、神社の施設も入っています。

観客は胸のあたりまで登って観覧できます。

下から見上げると迫力がありました。



3/5件目 椎間板ヘルニアにかかってしまった

椎間板ヘルニア(背骨は缶詰みたいなブロック状の骨が塔のように積み重なっていますが、そのブロック状の骨の間の、柔らかい部分が飛び出して神経をつつ いて痛いというもの)になりました。

首筋から右肩にかけて、動かすと激痛が走ってきびしいです。

右手の指先もしびれ始めて、左手で触ると少し他人の手を触っている感じがします。

大丈夫かな…


4/5件目 iTunesで映画「セレニティ」を観ました

(2005年アメリカ/SF/1:59/一般評価★★★☆☆/私評価★★☆☆☆

ドラマ版ターミネーターの少女ターミネーター役の人が出ていたりしますが、あまり面白くなかったです。

表面ばかり作っていて、中身がない感じかな…。でも、冒頭部分だけは面白い感じでした。


5/5件目 iTunesで映画「ハンガーゲーム2」を観ました

(2013年アメリカ/アクション/2:26/一般評価★★★☆☆/私評 価★★★★☆

面白かったです。

戦いに入るまでの序盤が長いという意見(他の方のレビュー)もあるんですが、「戦いも好きだけど人間ドラマも好きだ」という人には苦にならず、戦いの シーンもしっかり1時間程度見られるので楽しめるのではと思います。

3も続けて見たいと思わせたから★を4にしました。